home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1996
/
MacHack 1996.toast
/
Presentations
/
Presentations ’88
/
Feldt Advanced Mac Programming
/
List Manager
/
ICONLDEF.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-06-13
|
1KB
|
57 lines
#include <ListMgr.h>
pascal void main(lMessage,lSelect,lRect,lCell,lDataOffset,lDataLen,lHandle)
int lMessage;
Boolean lSelect;
Rect *lRect;
Cell lCell;
int lDataOffset,lDataLen;
ListHandle lHandle;
{
BitMap iconBits;
Rect srcRect,destRect;
char hState;
/* set the iconBits boundsRect to the rectangle argument */
iconBits.bounds = *lRect;
srcRect.top = lRect->top;
srcRect.left = lRect->left;
srcRect.bottom = lRect->top + 32;
srcRect.right = lRect->left + 32;
destRect.top = lRect->top;
destRect.left = lRect->left;
destRect.bottom = lRect->top + (**lHandle).cellSize.v;
destRect.right = lRect->left + (**lHandle).cellSize.h;
switch (lMessage) {
case lInitMsg:
break;
case lDrawMsg:
if (lDataLen > 0) {
hState = HGetState((**lHandle).cells);
HLock((**lHandle).cells);
iconBits.baseAddr = (Ptr)(*((**lHandle).cells)) + (long)lDataOffset;
iconBits.rowBytes = 4;
CopyBits(&iconBits,&(((**lHandle).port)->portBits),&srcRect,&destRect,srcCopy,(long)0);
HSetState((**lHandle).cells,hState);
}
else
EraseRect(lRect);
/* stop if no selection is needed */
if (!lSelect)
break;
/* otherwise, fall through to... */
case lHiliteMsg:
InvertRect(lRect);
break;
case lCloseMsg:
break;
}
}